package com.itheima.tanhua.dubbo.api;

import com.itheima.tanhua.domain.Question;
import com.itheima.tanhua.domain.Settings;
import com.itheima.tanhua.domain.User;
import com.itheima.tanhua.domain.UserInfo;
import com.itheima.tanhua.po.RecommendationPo;

import java.util.List;

/**
 * @author itheima
 * @since 2022-01-13
 */
public interface UserApi {
    User findByPhone(String phone);

    User createOne(String phone);

    Boolean addUserInfo(UserInfo userInfo);

    Boolean updateUserInfo(UserInfo userInfo);

    UserInfo findUserInfoByUserId(String userId);

    UserInfo getRecommendUser(String userId);

    /**
     * 获取通用设置
     *
     * @param userId 用户id
     * @return Settings
     */
    Settings findSettingsByUserId(String userId);

    /**
     * 更新通用设置
     *
     * @param settings settings
     * @return Boolean
     */
    Boolean updateSettingByUserId(Settings settings);

    /**
     * 插入问题设置
     *
     * @param question question
     * @return Boolean
     */
    Boolean createQuestion(Question question);

    /**
     * 更新问题设置
     *
     * @param question question
     * @return Boolean
     */
    Boolean updateQuestionByUserId(Question question);

    /**
     * 查询问题设置
     *
     * @param userId 用户id
     * @return Question
     */
    Question findQuestionByUserId(String userId);


    /**
     * 根据城市随机获取用户
     *
     * @param userId 当前用户id（用于排除）
     * @param city   城市
     * @return UserInfo
     */
    UserInfo randomUserByCity(String userId, String city);


    /**
     * 根据创建时间获取同城用户
     *
     * @param userId 当前用户id（用于排除）
     * @param po     推荐用户条件
     * @return List
     */
    List<UserInfo> findRecommendUserList(String userId, RecommendationPo po);
}
